Garbage collection is implemented by many modern computer systems to manage computer memory. The garbage collector identifies memory areas that can be reclaimed and recycles the memory. Usually, to reclaim an area of memory, the garbage collector examines each object in the area, determines whether the object is alive (still in use) or dead (no longer in use), relocates the live objects to a new area, remaps any references to such live objects, and releases the old memory area. The old memory area is typically unusable during the time the live objects are relocated and remapped. Thus, the system may be required to supply a greater amount of memory than what is in actual use to ensure proper operations. The cost of such systems tends to be higher than non-garbage collected systems due to the increased memory demand. It would be useful to have a more efficient technique of managing memory and performing garbage collection. It would also be desirable if the technique could be implemented effectively without significantly raising system cost.